package com.chengzhi.leetcode;

import java.util.PriorityQueue;

/**
 * @description: 设计一个找到数据流中第K大元素的类（class）。注意是排序后的第K大元素，不是第K个不同的元素。
 * 利用优先队列
 * @author: ruanchengzhi
 * @create: 2020-04-14 19:10
 **/
class KthLargest {
    PriorityQueue<Integer> queue;
    int k;

    public KthLargest(int k, int[] nums) {
        queue = new PriorityQueue<>(k);
        this.k = k;
        for (int i = 0; i < nums.length; i++) {
            this.add(nums[i]);
        }

    }

    public int add(int val) {
        if (queue.size() < k) {
            queue.offer(val);
        } else if (queue.peek() < val) {
            queue.poll();
            queue.offer(val);
        }
        return queue.peek();
    }


    public static void main(String[] args) {
        PriorityQueue<Integer> queue = new PriorityQueue<>(5, Integer::compareTo);
        queue.add(2);
        queue.add(1);
        queue.add(4);
        queue.add(3);
        queue.add(5);
        queue.add(6);
        System.out.println(queue);
    }
}